package com.ungs.reportes.datasource;

import java.util.ArrayList;
import java.util.List;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;

import com.ungs.entities.DetalleCompra;
import com.ungs.utils.Fechas;

public class SolicitudCompraDS implements JRDataSource {
	private List<DetalleCompra> detalleCompraList = new ArrayList<DetalleCompra>();
	private int indice = -1;

	public boolean next() throws JRException {
		return ++indice < detalleCompraList.size();
	}

	public Object getFieldValue(JRField jrf) throws JRException {
		Object valor = null;

		if ("cantidad".equals(jrf.getName())) {
			valor = String.valueOf(detalleCompraList.get(indice)
					.getCantidadHojas());
		}

		if ("marca".equals(jrf.getName())) {
			valor = detalleCompraList.get(indice).getMarca();
		}

		if ("calidad".equals(jrf.getName())) {
			valor = detalleCompraList.get(indice).getCalidad().getDescripcion();
		}

		if ("variante".equals(jrf.getName())) {
			valor = detalleCompraList.get(indice).getVariante()
					.getDescripcion();
		}

		if ("gramaje".equals(jrf.getName())) {
			valor = String.valueOf(detalleCompraList.get(indice).getGramaje())
					+ " gr/m2";
		}

		if ("formatoPapel".equals(jrf.getName())) {
			valor = detalleCompraList.get(indice).getFormatoPapel()
					.getFormatoPapel();
		}

		if ("precioUnitario".equals(jrf.getName())) {
			valor = "$ "
					+ String.valueOf(detalleCompraList.get(indice)
							.getPrecioUnitario());
		}

		if ("unidadMedidaPrecio".equals(jrf.getName())) {
			valor = detalleCompraList.get(indice).getUnidadMedidaPrecio();
		}

		if ("importe".equals(jrf.getName())) {
			valor = "$ "
					+ String.valueOf(detalleCompraList.get(indice).getImporte());
		}

		if ("estado".equals(jrf.getName())) {
			if (detalleCompraList.get(indice).getEstado() != null) {
				valor = detalleCompraList.get(indice).getEstado();
			} else {
				valor = "";
			}

		}

		if ("fechaLlegada".equals(jrf.getName())) {
			if (detalleCompraList.get(indice).getFechaLlegada() != null) {
				valor = Fechas.getFechaStringConHora(detalleCompraList.get(
						indice).getFechaLlegada());
			} else {
				valor = "";
			}

		}

		if ("enStock".equals(jrf.getName())) {
			if (detalleCompraList.get(indice).isEnStock()) {
				valor = "SI";
			} else {
				valor = "NO";
			}

		}

		return valor;
	}

	public void addDetalleCompra(DetalleCompra detalleCompra) {
		this.detalleCompraList.add(detalleCompra);
	}

	public void addDetalleCompralList(List<DetalleCompra> detalleCompraList) {
		this.detalleCompraList = detalleCompraList;
	}

}
